/*
 * @Author: your name
 * @Date: 2021-09-17 23:46:14
 * @LastEditTime: 2021-09-18 09:49:16
 * @LastEditors: your name
 * @Description: In User Settings Edit
 * @FilePath: /professional-node/http-work/code/index.js
 */
// http.createServer 创建一个http服务器
// 1. 读取静态资源 （html\css\js\img...）
// 2. 写接口 (get/post/...)

// http:请求 被动请求（你不请求，我不相应）request response

// 读资源 / 写接口
const fs = require('fs')
const http = require('http')
const path = require('path')
const querystring = require('querystring')

const server = http.createServer((req, res) => {
	// request 前端过来的 （解析请求）（参数）
	// response 后端响应的 （处理响应）（基于参数，返回数据）
	const method = req.method
	const url = req.url
	// http://localhost:3000/api/test?name=devin

	// http:// -->协议
	// localhost:3000 -> 域名加端口
	// api/test 请求路径
	// ?name=devin 参数（GET）
	const address = url.split('?')[0]
	const query = querystring.parse(url.split('?')[1])
	res.setHeader('Content-Type', 'text/html;charset=utf-8')
	// 凡是有后缀，都说明前端想看页面了
	// 凡是没有后缀的，都说明前端要的是接口
	const fileName = path.join(__dirname + address)
	console.log('fileName:', fileName)

	if (path.extname(url)) {
		// 读文件
		if (path.extname(url) === '.ico') {
			res.end('')
		} else {
			// if (path.extname(url) === '.jpeg') {
			// 	res.end(fs.readFileSync(fileName))
			// 	return
			// }
			res.end(fs.readFileSync(fileName))
		}
		return
	} else {
		// 写接口
		if (method === 'GET' && address === '/api/login') {
			res.end(
				JSON.stringify({
					method,
					url,
					address,
					query
				})
			)
			return
		}
	}

	res.end(`<h1>我是汉字，404.。。</h1>`)

	// res.end() 将结果响应在浏览器上或者给前端，必须是字符串
	// res.end()只能响应一个
	// const html = fs.readFileSync('./index.html')
	// res.end(html)
})

server.listen('3000', () => {
	console.log(`http://localhost:3000`)
})
